package interfazeak;

import java.awt.BorderLayout;
import java.awt.EventQueue;

import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.border.EmptyBorder;
import java.awt.Color;
import javax.swing.JButton;
import javax.swing.JCheckBox;
import javax.swing.JDialog;
import javax.swing.JOptionPane;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.table.AbstractTableModel;
import javax.swing.table.DefaultTableModel;
import javax.swing.table.TableModel;
import javax.swing.table.TableRowSorter;
import javax.swing.UIManager;

import db.LekuaKud;

import java.awt.event.ActionEvent;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.awt.event.ActionListener;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.Vector;

import laguntzaileak.Aukeratutakoak;

import Imagenes.IrudiakLekuak;
import Taulak.MTBMahastiak;

public class Mahastiak_Lekuak extends JFrame {

	private JPanel contentPane;
	private JTable table;
	private JButton upeletanSartu;
	private MTBMahastiak mahastitaula;
	private Vector<Integer> aukera;
	private JFrame frame;
	private Vector<JCheckBox> barietatebektorea;
	private String izena;
	private String herria;
	private JButton lekua;
	private JButton ezabatu;
	private JButton eguneratu;
	private JButton batu;
	private JButton gehitu;
	private Vector<String> lekuabektorea;
	private JButton btnBotikak;
	private JButton btnHasieraOrria;

	/**
	 * Launch the application.
	 */
	public static void main(String[] args) {
		EventQueue.invokeLater(new Runnable() {
			public void run() {
				try {
					Mahastiak_Lekuak frame = new Mahastiak_Lekuak();
					frame.setVisible(true);
				} catch (Exception e) {
					e.printStackTrace();
				}
			}
		});
	}

	/**
	 * Create the frame.
	 */
	public Mahastiak_Lekuak() {
		lekuabektorea = new Vector<String>();

		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		setBounds(100, 100, 800, 500);
		setTitle("LEKUAK");
		contentPane = new JPanel();
		contentPane.setForeground(Color.WHITE);
		contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
		setContentPane(contentPane);
		contentPane.setLayout(null);

		IrudiakLekuak p = new IrudiakLekuak();
		p.setBorder(new EmptyBorder(5, 5, 5, 5));
		p.setLayout(new BorderLayout(0, 0));
		setContentPane(p);
		p.setLayout(null);
		
		btnBotikak = new JButton("BOTIKAK");
		btnBotikak.addActionListener(new ActionListener() {

			@Override
			public void actionPerformed(ActionEvent e) {
				Mahastiak_Lekuak.this.botiketarajoan();
			}
		});
		btnBotikak.setBounds(25, 64, 117, 25);
		p.add(btnBotikak);

		upeletanSartu = new JButton("UPELETAN SARTU");
		upeletanSartu.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent arg0) {

				Mahastiak_Lekuak.this.upelaratu();

			}
		});

		upeletanSartu.setBounds(340, 64, 169, 25);
		p.add(upeletanSartu);

		lekua = new JButton("LEKUAK");
		lekua.setForeground(UIManager.getColor("Button.select"));
		lekua.setBounds(142, 64, 117, 25);
		p.add(lekua);

		btnHasieraOrria = new JButton("HASIERA ORRIA");
		btnHasieraOrria.addActionListener(new ActionListener() {

			@Override
			public void actionPerformed(ActionEvent arg0) {
				
				Mahastiak_Lekuak.this.buelta();

			}
		});
		btnHasieraOrria.setBounds(535, 64, 157, 25);
		p.add(btnHasieraOrria);

		JScrollPane scrollPane = new JScrollPane();
		scrollPane.setBounds(96, 190, 265, 185);
		p.add(scrollPane);

		table = new JTable();
		mahastitaula = new MTBMahastiak();
		table.setModel(mahastitaula);
		table.addMouseListener(new MouseAdapter() {
			public void mouseClicked(MouseEvent e) {
				if (e.getClickCount() == 2) {
					JTable target = (JTable) e.getSource();
					int row = target.getSelectedRow();
					// int column = target.getSelectedColumn();
					Mahastiak_Lekuak.this.erakutsiTaula(row);
					
				}
			}
		});
		// mahastitaula.kargatu("Lezama","Etxea"); // proba bat da gehitzeko.
		// mahastitaula.kargatu("Derio", "Errekalde");// proba bat da gehitzeko.

		scrollPane.setViewportView(table);

		gehitu = new JButton("GEHITU");
		gehitu.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent arg0) {

				Mahastiak_Lekuak.this.add();

			}

		});
		gehitu.setForeground(Color.BLACK);
		gehitu.setBounds(430, 186, 150, 25);
		p.add(gehitu);

		ezabatu = new JButton("EZABATU");
		ezabatu.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent arg0) {
				if (table.getSelectedRow() == -1) {
					JOptionPane.showMessageDialog(Mahastiak_Lekuak.this,
							"Lerro bat aukeratu", "KONTUZ",
							JOptionPane.WARNING_MESSAGE);
				} else {
					int konfirmatu = JOptionPane.showConfirmDialog(
							Mahastiak_Lekuak.this, "Ezabatu nahi duzu?");

					if (JOptionPane.OK_OPTION == konfirmatu) {
						Mahastiak_Lekuak.this.ezabatu();
					}
				}

			}

		});
		ezabatu.setBounds(430, 236, 150, 25);
		p.add(ezabatu);

		eguneratu = new JButton("EGUNERATU");
		eguneratu.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent arg0) {
				if (table.getSelectedRow() == -1) {
					JOptionPane.showMessageDialog(Mahastiak_Lekuak.this,
							"Lerro bat aukeratu", "KONTUZ",
							JOptionPane.WARNING_MESSAGE);

				} else {
					Mahastiak_Lekuak.this.eguneratu();
				}
			}

		});
		eguneratu.setBounds(430, 286, 150, 25);
		p.add(eguneratu);

		batu = new JButton("MAHATSAK BATU");
		batu.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent arg0) {
				if (table.getSelectedRow() == -1) {
					JOptionPane.showMessageDialog(Mahastiak_Lekuak.this,
							"Lerro bat aukeratu", "KONTUZ",
							JOptionPane.WARNING_MESSAGE);
				} else {
					Mahastiak_Lekuak.this.batu();
				}

			}

		});
		batu.setBounds(430, 336, 150, 25);
		p.add(batu);
		bistaratu();

	}

	protected void buelta() {
		
		Hasiera h = new Hasiera();
		h.setVisible(true);
		this.dispose();

	}

	protected void botiketarajoan() {
		

		Botikak b = new Botikak();
		b.setVisible(true);
		this.dispose();
	}

	protected void erakutsiTaula(int lerroa) {
		String h = (String) table.getValueAt(lerroa, 0);
		String i = (String) table.getValueAt(lerroa, 1);
		int idLekua = LekuaKud.lortulekua(h, i);

		JDialog dialog = new Batutakoa(Mahastiak_Lekuak.this, true, idLekua);
		dialog.setVisible(true);

	}

	protected void eguneratu() {
		int lerroa = table.getSelectedRow();

		String h = (String) table.getValueAt(lerroa, 0);
		String i = (String) table.getValueAt(lerroa, 1);
		JDialog dialog = new Eguneratu(Mahastiak_Lekuak.this, true, h, i);
		dialog.setVisible(true);

	}

	protected void ezabatu() {
		int lerroa = table.getSelectedRow();
		String herria = (String) table.getValueAt(lerroa, 0);
		String izena = (String) table.getValueAt(lerroa, 1);
		int id = LekuaKud.lortulekua(herria, izena);
		LekuaKud.ezabatu(id);
		mahastitaula.ezabatu(lerroa);
	}

	protected void bistaratu() {
		ResultSet rs = LekuaKud.kargatu();

		try {
			while (rs.next()) {
				String herria = rs.getString("Herria");
				String izena = rs.getString("izena");
				mahastitaula.kargatu(herria, izena);
			}
		} catch (SQLException e) {

			e.printStackTrace();
		}

	}

	protected void add() {

		JDialog dialog = new Gehitu(Mahastiak_Lekuak.this, true);
		dialog.setVisible(true);
	

	}

	protected void upelaratu() {
		upeletanSartu b = new upeletanSartu(Mahastiak_Lekuak.this);
		b.setVisible(true);
		this.dispose();

	}

	
	public void aukeratutakoak(Aukeratutakoak aukeratuta) {
		int i = 1;
		barietatebektorea = new Vector<JCheckBox>();
		while (aukeratuta.getBarietatecheck().size() >= i) {
			JCheckBox check = aukeratuta.getBarietatecheck().elementAt(i - 1);
			if (check.isSelected()) {
				barietatebektorea.add(check);

			}
			i = i + 1;
		}
		aukeratuta.toString();
		herria = aukeratuta.getHerria();
		izena = aukeratuta.getIzena();

	}

	/*
	 *
	 * bistarau berriz. public void gehitu() {
	 * 
	 * mahastitaula.kargatu(herria, izena);
	 * 
	 * }
	 */

	public void sartubd(Aukeratutakoak aukeratuta) {
		LekuaKud.sartu(aukeratuta);
		LekuaKud.sartuBadago(aukeratuta);
	}

	protected void batu() {

		int lerroa = table.getSelectedRow();
		String h = (String) table.getValueAt(lerroa, 0);
		String i = (String) table.getValueAt(lerroa, 1);

		JDialog dialog = new Batu(Mahastiak_Lekuak.this, true, h, i);
		dialog.setVisible(true);

	}

	public void ezabatutaula() {
		int ler = table.getRowCount();
		mahastitaula.taulaHasieratu(ler);

	}

}
